package com.guodi.common.utils;

import com.aspose.words.Document;
import com.aspose.words.SaveFormat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.*;

/**
 * @描述：Word工具类
 * @作者：汤厚韬
 * @日期：2020/12/8 10:07
 **/
public class WordUtil {

    private static Logger logger = LoggerFactory.getLogger(WordUtil.class);

    /**
     * @描述： word转pdf
     * @作者：汤厚韬
     * @日期：2020/12/8 10:29
     **/
    public static void doc2pdf(String docFilePath, String pdfFilePath) {
        FileOutputStream os = null;
        FileInputStream is = null;
        try {
            System.out.println("开始转换......");
            // 临时文件，可以放在项目目录下，用完删除，但一定要有文件夹，没有的话需要创建
            File changedFile = new File(pdfFilePath);
            os = new FileOutputStream(changedFile);
            is = new FileInputStream(new File(docFilePath));
            Document document = new Document(is);
            // 支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF...
            // 保存具有新名称和文件格式的文档
            document.save(os, SaveFormat.PDF);
            System.out.println("开始完成......");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (os != null) {
                try {
                    // 关闭输出流删除临时文件
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (is != null) {
                try {
                    //关闭输入流
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    /**
     * @描述： word转pdf
     * @作者：汤厚韬
     * @日期：2020/12/8 10:29
     **/
    public static void doc2pdf(File docFile, File pdfFile) {
        FileOutputStream os = null;
        FileInputStream is = null;
        try {
            System.out.println("开始转换......");
            os = new FileOutputStream(pdfFile);
            is = new FileInputStream(docFile);
            Document document = new Document(is);
            // 支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF...
            // 保存具有新名称和文件格式的文档
            document.save(os, SaveFormat.PDF);
            System.out.println("开始完成......");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (os != null) {
                try {
                    // 关闭输出流删除临时文件
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (is != null) {
                try {
                    //关闭输入流
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }


    /**
     * @描述： word转pdf
     * @作者：陈宏成
     * @日期：2021-04-02
     **/
    public static void doc2pdf(InputStream docInputStream, OutputStream pdfOutputStream) {
        try{
            logger.debug("开始转换......");
            Document document = new Document(docInputStream);
            // 支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF...
            // 保存具有新名称和文件格式的文档
            document.save(pdfOutputStream, SaveFormat.PDF);
            logger.debug("转换完成......");
        } catch (Exception e) {
            logger.error("word转pdf失败",e);
        } finally {
            if (pdfOutputStream != null) {
                try {
                    // 关闭输出流删除临时文件
                    pdfOutputStream.flush();
                    pdfOutputStream.close();
                } catch (IOException e) {
                    logger.error("",e);
                }
            }
            if (docInputStream != null) {
                try {
                    //关闭输入流
                    docInputStream.close();
                } catch (IOException e) {
                    logger.error("",e);
                }
            }
        }
    }


}
